/*
 * Copyright (c) 2010 Zauber S.A.  -- All rights reserved
 */
package ar.edu.itba.ia2010.geneticos.motor.api.sintaxistree.bitwise;

import java.util.Random;

import ar.edu.itba.ia2010.geneticos.motor.api.sintaxistree.Expresion;
import ar.edu.itba.ia2010.geneticos.motor.api.sintaxistree.ExpresionGenerator;
import ar.edu.itba.ia2010.geneticos.motor.api.sintaxistree.impl.ExpresionPrimitive;

/**
 * Clase abstracta para {@link ExpresionPrimitive} binarios
 * 
 * @author Juan F. Codagnone
 * @since Mar 30, 2010
 */
public abstract class AbstractBinaryExpresionPrimitive 
     implements ExpresionPrimitive {

    /** @see ExpresionPrimitive#getSubExpresions() */
    public final int getSubExpresions() {
        return 2;
    }
    
    /** @see ExpresionPrimitive#create(Random, int, ExpresionGenerator) */
    public final Expresion create(final Random random, final int maxAltura,
                                  final ExpresionGenerator expresionGenerator) {
        return create(expresionGenerator.generate(random, maxAltura - 1), 
                       expresionGenerator.generate(random, maxAltura - 1));
    }
    

    /** @see ExpresionPrimitive#isTerminal() */
    public final boolean isTerminal() {
        return false;
    }
}
